def get_number(prompt):
    """获取用户输入的有效数字"""
    while True:
        try:
            num = float(input(prompt))
            return num
        except ValueError:
            print("错误：请输入有效的数字！")

def get_operator():
    """获取用户输入的有效运算符（+、-、*、/）"""
    valid_operators = ['+', '-', '*', '/']
    while True:
        operator = input("请选择操作（+、-、*、/）：").strip()
        if operator in valid_operators:
            return operator
        else:
            print("错误：无效的运算符，请重新输入。")

def calculate(num1, operator, num2):
    """根据运算符执行计算并返回结果"""
    if operator == '+':
        return num1 + num2
    elif operator == '-':
        return num1 - num2
    elif operator == '*':
        return num1 * num2
    elif operator == '/':
        if num2 == 0:
            raise ZeroDivisionError("除数不能为零")
        return num1 / num2

def main():
    print("欢迎使用控制台计算器！")
    print("支持操作：加法（+）、减法（-）、乘法（*）、除法（/）\n")

    while True:
        # 获取输入
        num1 = get_number("请输入第一个数字：")
        operator = get_operator()
        num2 = get_number("请输入第二个数字：")

        # 执行计算
        try:
            result = calculate(num1, operator, num2)
            print(f"\n计算结果：{num1} {operator} {num2} = {result}\n")
        except ZeroDivisionError as e:
            print(f"错误：{e}\n")

        # 询问是否继续
        continue_calculation = input("是否继续计算？（输入 y 继续，其他键退出）：").strip().lower()
        if continue_calculation != 'y':
            print("\n感谢使用计算器，再见！")
            break

if __name__ == "__main__":
    main()